_require local "../../../../basis.smi"

_require       "../../../compilerIRs/recordcalc/main/RecordCalc.ppg.smi"
_require       "../../../compilerIRs/typedlambda/main/TypedLambda.ppg.smi"
_require local "../../../data/builtin/main/BuiltinPrimitive.ppg.smi"
_require local "../../../data/builtin/main/BuiltinTypes.smi"
_require local "../../../data/builtin/main/ConstantError.ppg.smi"
_require local "../../../data/builtin/main/ConstantTypes.smi"
_require local "../../../data/runtimetypes/main/RuntimeTypes.ppg.smi"
_require local "../../../data/symbols/main/Loc.smi"
_require local "../../../data/symbols/main/RecordLabel.smi"
_require local "../../../data/symbols/main/Symbol.smi"
_require local "../../../data/types/main/Types.ppg.smi"
_require local "../../../data/types/main/TypesBasics.smi"
_require local "../../../data/types/main/TyRevealTy.smi"
_require local "../../../extensions/debug/main/Bug.smi"
_require local "../../../extensions/usererror/main/UserError.ppg.smi"
_require local "../../../libs/ids/main/LocalID.smi"
_require local "./EmitTypedLambda.smi"
_require local "./SwitchCompile.smi"
_require local "./PrimitiveTypedLambda.smi"

_require "../../../compilerIRs/typedcalc/main/TypedCalc.ppg.smi"
_require "../../../compilerIRs/typedlambda/main/TypedLambda.ppg.smi"

structure DatatypeCompilation =
struct
  type env (= {})
  val emptyEnv : env
  val compileExp : env -> TypedCalc.tpexp -> TypedLambda.tlexp
  val compile : TypedCalc.tpdecl list -> TypedLambda.tldecl list
end
